home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / make / icmake-6.000 / icmake-6 / icmake / comp / scast.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  807 b   |  37 lines

  1. /*
  2.                                     S C A S T . C
  3. */
  4.  
  5. #include "iccomp.h"
  6.  
  7. ESTRUC_ *scast(e)
  8.     ESTRUC_
  9.         *e;
  10. {
  11.     char
  12.         buffer[10];
  13.  
  14.     if (test_type(e, e_list))               /* (string)list not ok */
  15.     {
  16.         semantic(illegal_cast);
  17.         discard(e);
  18.         set_type(e, e_str | e_const);
  19.     }
  20.     else if (test_type(e, e_int))           /* (string)int ok */
  21.     {
  22.         if (test_type(e, e_const))
  23.         {
  24.             sprintf(buffer, "%d", e->evalue);     /* convert to string */
  25.             e->evalue = lookstring(buffer);
  26.             set_type(e, e_const | e_str);
  27.         }
  28.         else
  29.         {
  30.             etoc(e);                        /* convert to code */
  31.             gencode(e, op_itoa);
  32.             set_type(e, e_code | e_str);
  33.         }
  34.     }
  35.     return (e);
  36. }
  37.